diff --git a/web/pgadmin/browser/__init__.py b/web/pgadmin/browser/__init__.py
index c6c5545..77e052f 100644
--- a/web/pgadmin/browser/__init__.py
+++ b/web/pgadmin/browser/__init__.py
@@ -549,6 +549,12 @@ def browser_js():
editor_wrap_code_pref = prefs.preference('wrap_code')
editor_wrap_code = editor_wrap_code_pref.get()
+ brace_matching_pref = prefs.preference('brace_matching')
+ brace_matching = brace_matching_pref.get()
+
+ insert_pair_brackets_perf = prefs.preference('insert_pair_brackets')
+ insert_pair_brackets = insert_pair_brackets_perf.get()
+
for submodule in current_blueprint.submodules:
snippets.extend(submodule.jssnippets)
return make_response(
@@ -561,6 +567,8 @@ def browser_js():
editor_tab_size=editor_tab_size,
editor_use_spaces=editor_use_spaces,
editor_wrap_code=editor_wrap_code,
+ editor_brace_matching=brace_matching,
+ editor_insert_pair_brackets=insert_pair_brackets,
_=gettext
),
200, {'Content-Type': 'application/x-javascript'})
diff --git a/web/pgadmin/browser/templates/browser/js/browser.js b/web/pgadmin/browser/templates/browser/js/browser.js
index 4494e7a..e587348 100644
--- a/web/pgadmin/browser/templates/browser/js/browser.js
+++ b/web/pgadmin/browser/templates/browser/js/browser.js
@@ -7,7 +7,8 @@ define(
'pgadmin.alertifyjs', 'pgadmin.browser.messages',
'pgadmin.browser.menu', 'pgadmin.browser.panel',
'pgadmin.browser.error', 'pgadmin.browser.frame',
- 'pgadmin.browser.node', 'pgadmin.browser.collection'
+ 'pgadmin.browser.node', 'pgadmin.browser.collection',
+ 'codemirror/addon/edit/matchbrackets', 'codemirror/addon/edit/closebrackets'
], function(
gettext, url_for, require, $, _, S, Bootstrap, pgAdmin, Alertify,
CodeMirror, checkNodeVisibility
@@ -384,7 +385,9 @@ define(
readOnly: true,
extraKeys: pgAdmin.Browser.editor_shortcut_keys,
tabSize: pgAdmin.Browser.editor_options.tabSize,
- lineWrapping: pgAdmin.Browser.editor_options.wrapCode
+ lineWrapping: pgAdmin.Browser.editor_options.wrapCode,
+ autoCloseBrackets: pgAdmin.Browser.editor_options.insert_pair_brackets,
+ matchBrackets: pgAdmin.Browser.editor_options.brace_matching
});
setTimeout(function() {
@@ -1830,7 +1833,9 @@ define(
},
editor_options: {
tabSize: '{{ editor_tab_size }}',
- wrapCode: '{{ editor_wrap_code }}' == 'True'
+ wrapCode: '{{ editor_wrap_code }}' == 'True',
+ insert_pair_brackets: '{{ editor_insert_pair_brackets }}' == 'True',
+ brace_matching: '{{ editor_brace_matching }}' == 'True'
}
});
diff --git a/web/pgadmin/static/css/codemirror.overrides.css b/web/pgadmin/static/css/codemirror.overrides.css
new file mode 100644
index 0000000..b486ee4
--- /dev/null
+++ b/web/pgadmin/static/css/codemirror.overrides.css
@@ -0,0 +1,5 @@
+/* To override inbuilt Green color for matchingbracket */
+.cm-s-default .CodeMirror-matchingbracket {
+ color: #333333 !important;
+ background-color: #e8e8e8 !important;
+}
\ No newline at end of file
diff --git a/web/pgadmin/static/js/backform.pgadmin.js b/web/pgadmin/static/js/backform.pgadmin.js
index a82205e..27d5b4c 100644
--- a/web/pgadmin/static/js/backform.pgadmin.js
+++ b/web/pgadmin/static/js/backform.pgadmin.js
@@ -5,7 +5,8 @@
define([
'sources/gettext', 'underscore', 'underscore.string', 'jquery',
'backbone', 'backform', 'backgrid', 'codemirror', 'pgadmin.backgrid',
- 'codemirror/mode/sql/sql', 'select2'
+ 'codemirror/mode/sql/sql', 'select2', 'codemirror/addon/edit/matchbrackets',
+ 'codemirror/addon/edit/closebrackets'
],
function(gettext, _, S, $, Backbone, Backform, Backgrid, CodeMirror) {
// Export global even in AMD case in case this script is loaded with
@@ -1405,7 +1406,9 @@
readOnly: true,
extraKeys: pgAdmin.Browser.editor_shortcut_keys,
tabSize: pgAdmin.Browser.editor_options.tabSize,
- lineWrapping: pgAdmin.Browser.editor_options.wrapCode
+ lineWrapping: pgAdmin.Browser.editor_options.wrapCode,
+ autoCloseBrackets: pgAdmin.Browser.editor_options.insert_pair_brackets,
+ matchBrackets: pgAdmin.Browser.editor_options.brace_matching
});
/*
@@ -2014,10 +2017,12 @@
self.sqlCtrl = CodeMirror.fromTextArea(
(self.$el.find("textarea")[0]), {
lineNumbers: true,
- mode: "text/x-sql",
+ mode: "text/x-pgsql",
extraKeys: pgAdmin.Browser.editor_shortcut_keys,
tabSize: pgAdmin.Browser.editor_options.tabSize,
- lineWrapping: pgAdmin.Browser.editor_options.wrapCode
+ lineWrapping: pgAdmin.Browser.editor_options.wrapCode,
+ autoCloseBrackets: pgAdmin.Browser.editor_options.insert_pair_brackets,
+ matchBrackets: pgAdmin.Browser.editor_options.brace_matching
});
// Disable editor
diff --git a/web/pgadmin/templates/base.html b/web/pgadmin/templates/base.html
index 83736b8..cf9cfd2 100755
--- a/web/pgadmin/templates/base.html
+++ b/web/pgadmin/templates/base.html
@@ -56,6 +56,7 @@
+
{% block css_link %}{% endblock %}
diff --git a/web/pgadmin/tools/datagrid/templates/datagrid/js/datagrid.js b/web/pgadmin/tools/datagrid/templates/datagrid/js/datagrid.js
index 768e119..aa04c2f 100644
--- a/web/pgadmin/tools/datagrid/templates/datagrid/js/datagrid.js
+++ b/web/pgadmin/tools/datagrid/templates/datagrid/js/datagrid.js
@@ -1,6 +1,8 @@
define([
'sources/gettext', 'sources/url_for', 'jquery','alertify', 'pgadmin','codemirror',
- 'sources/sqleditor_utils', 'pgadmin.browser', 'wcdocker'
+ 'sources/sqleditor_utils', 'pgadmin.browser', 'wcdocker',
+ 'codemirror/addon/edit/matchbrackets', 'codemirror/addon/edit/closebrackets'
+
], function(gettext, url_for, $, alertify, pgAdmin, codemirror, sqlEditorUtils) {
// Some scripts do export their object in the window only.
// Generally the one, which do no have AMD support.
@@ -263,13 +265,13 @@ define([
// Apply CodeMirror to filter text area.
this.filter_obj = CodeMirror.fromTextArea($sql_filter.get(0), {
lineNumbers: true,
- lineWrapping: true,
- matchBrackets: true,
indentUnit: 4,
mode: "text/x-pgsql",
extraKeys: pgBrowser.editor_shortcut_keys,
tabSize: pgBrowser.editor_options.tabSize,
- lineWrapping: pgAdmin.Browser.editor_options.wrapCode
+ lineWrapping: pgAdmin.Browser.editor_options.wrapCode,
+ autoCloseBrackets: pgAdmin.Browser.editor_options.insert_pair_brackets,
+ matchBrackets: pgAdmin.Browser.editor_options.brace_matching
});
},
diff --git a/web/pgadmin/tools/debugger/templates/debugger/js/direct.js b/web/pgadmin/tools/debugger/templates/debugger/js/direct.js
index fc01b21..9e5b7d5 100644
--- a/web/pgadmin/tools/debugger/templates/debugger/js/direct.js
+++ b/web/pgadmin/tools/debugger/templates/debugger/js/direct.js
@@ -4,7 +4,9 @@ define([
'pgadmin.tools.debugger.ui', 'wcdocker', 'pgadmin.backform',
'pgadmin.backgrid', 'codemirror/addon/selection/active-line',
'codemirror/addon/fold/foldgutter', 'codemirror/addon/fold/foldcode',
- 'pgadmin-sqlfoldcode'
+ 'pgadmin-sqlfoldcode', 'codemirror/addon/edit/matchbrackets',
+ 'codemirror/addon/edit/closebrackets',
+
], function(
gettext, $, _, S, Alertify, pgAdmin, pgBrowser, Backbone, Backgrid,
CodeMirror, Backform, debug_function_again
@@ -1605,7 +1607,9 @@ define([
readOnly: true,
extraKeys: pgAdmin.Browser.editor_shortcut_keys,
tabSize: pgAdmin.Browser.editor_options.tabSize,
- lineWrapping: pgAdmin.Browser.editor_options.wrapCode
+ lineWrapping: pgAdmin.Browser.editor_options.wrapCode,
+ autoCloseBrackets: pgAdmin.Browser.editor_options.insert_pair_brackets,
+ matchBrackets: pgAdmin.Browser.editor_options.brace_matching
});
// On loading the docker, register the callbacks
diff --git a/web/pgadmin/tools/sqleditor/__init__.py b/web/pgadmin/tools/sqleditor/__init__.py
index c6fcdc3..bfa59c6 100644
--- a/web/pgadmin/tools/sqleditor/__init__.py
+++ b/web/pgadmin/tools/sqleditor/__init__.py
@@ -193,6 +193,21 @@ class SqlEditorModule(PgAdminModule):
help_str=gettext('Specifies whether or not to wrap SQL code in editor.')
)
+ self.insert_pair_brackets = self.preference.register(
+ 'Options', 'insert_pair_brackets',
+ gettext("Insert pair brackets?"), 'boolean', False,
+ category_label=gettext('Options'),
+ help_str=gettext('Specifies whether or not to insert pair brackets in editor.')
+ )
+
+ self.brace_matching = self.preference.register(
+ 'Options', 'brace_matching',
+ gettext("Brace matching?"), 'boolean', False,
+ category_label=gettext('Options'),
+ help_str=gettext('Specifies whether or not to highlight matched braces in editor.')
+ )
+
+
blueprint = SqlEditorModule(MODULE_NAME, __name__, static_url_path='/static')
diff --git a/web/pgadmin/tools/sqleditor/templates/sqleditor/js/sqleditor.js b/web/pgadmin/tools/sqleditor/templates/sqleditor/js/sqleditor.js
index eeb320e..6d8ce1e 100644
--- a/web/pgadmin/tools/sqleditor/templates/sqleditor/js/sqleditor.js
+++ b/web/pgadmin/tools/sqleditor/templates/sqleditor/js/sqleditor.js
@@ -25,6 +25,8 @@ define([
'codemirror/addon/search/search',
'codemirror/addon/search/searchcursor',
'codemirror/addon/search/jump-to-line',
+ 'codemirror/addon/edit/matchbrackets',
+ 'codemirror/addon/edit/closebrackets',
'backgrid.sizeable.columns',
'slick.pgadmin.formatters',
@@ -111,7 +113,6 @@ define([
$('.editor-title').text(_.unescape(self.editor_title));
self.filter_obj = CodeMirror.fromTextArea(filter.get(0), {
lineNumbers: true,
- matchBrackets: true,
indentUnit: 4,
mode: "text/x-pgsql",
foldOptions: {
@@ -124,7 +125,9 @@ define([
gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"],
extraKeys: pgBrowser.editor_shortcut_keys,
tabSize: pgAdmin.Browser.editor_options.tabSize,
- lineWrapping: pgAdmin.Browser.editor_options.wrapCode
+ lineWrapping: pgAdmin.Browser.editor_options.wrapCode,
+ autoCloseBrackets: pgAdmin.Browser.editor_options.insert_pair_brackets,
+ matchBrackets: pgAdmin.Browser.editor_options.brace_matching
});
// Create main wcDocker instance
@@ -154,7 +157,6 @@ define([
self.query_tool_obj = CodeMirror.fromTextArea(text_container.get(0), {
lineNumbers: true,
- matchBrackets: true,
indentUnit: 4,
styleSelectedText: true,
mode: "text/x-pgsql",
@@ -169,7 +171,9 @@ define([
extraKeys: pgBrowser.editor_shortcut_keys,
tabSize: pgAdmin.Browser.editor_options.tabSize,
lineWrapping: pgAdmin.Browser.editor_options.wrapCode,
- scrollbarStyle: 'simple'
+ scrollbarStyle: 'simple',
+ autoCloseBrackets: pgAdmin.Browser.editor_options.insert_pair_brackets,
+ matchBrackets: pgAdmin.Browser.editor_options.brace_matching
});
// Refresh Code mirror on SQL panel resize to